package 算法.leetcode.labuladong.数组和链表;

import java.util.HashMap;
import java.util.Map;

/**
 * @author lchenglong
 * @date 2022/6/16
 */
public class 滑动窗口框架 {

    /* 滑动窗⼝算法框架 */
    void slidingWindow(String s, String t) {
        Map<Character, Integer> need = new HashMap<>();
        Map<Character, Integer> window = new HashMap<>();
        for (char c : t.toCharArray()) need.put(c, need.get(c) + 1);
        int left = 0, right = 0;
        int valid = 0;
        while (right < s.length()) {
            // c 是将移⼊窗⼝的字符
            char c = s.charAt(right);
            // 增⼤窗⼝
            right++;
            // 进⾏窗⼝内数据的⼀系列更新
            //...
            /*** debug 输出的位置 ***/
            //            printf("window: [%d, %d)\n", left, right);
            /********************/
            // 判断左侧窗⼝是否要收缩
            while (1 == 1/**window needs 收缩*/) {
                // d 是将移出窗⼝的字符
                char d = s.charAt(left);
                // 缩⼩窗⼝
                left++;
                // 进⾏窗⼝内数据的⼀系列更新
                // ...
            }
        }
    }
}
